package com.itlong.cloud.operate.dao;

import com.itlong.cloud.POJO.VO.operate.DeviceTypeDefineVO;
import com.itlong.cloud.POJO.VO.operate.OperateUpdateDetailVO;
import com.itlong.cloud.POJO.VO.operate.OperateUpdateInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      运营-固件升级-安装包管理操作数据接口。
 * <desc/>
 *
 * @createDate 2018/08/23.
 */
@Mapper
@Repository
public interface IOperatePackageDao {

     /**
      * <desc>
      *      分页获取安装包信息。
      * <desc/>
      *
      * @param  params
      * @return
      * @author Qiang.S
      * @createDate 2018/08/23
      */
    List<OperateUpdateInfoVO> getUpdateInfoPage(Map<String, Object> params);

    /**
     * <desc>
     *      安装包信息结果总记录数。
     * <desc/>
     *
     * @param params
     * @return
     * @author Qiang.S
     * @createDate 2018/08/23
     */
    Integer getUpdateInfoCount(Map<String, Object> params);

    /**
     * <desc>
     *      批量删除安装包信息
     * <desc/>
     *
     * @param updateIds 更新文件编号
     * @return
     * @author Qiang.S
     * @createDate 2018-08-23
     */
    Integer deleteUpdateInfo(@Param("updateIds") String[] updateIds);

    /**
     * <desc>
     *      删除和安装包有关云对讲指令
     * <desc/>
     *
     * @param updateIds 更新文件编号
     * @return
     * @author Qiang.S
     * @createDate 2018-10-15
     */
    Integer deleteCloudChange(@Param("updateIds") String[] updateIds);

    /**
     * <desc>
     *      删除和安装包有关电梯指令
     * <desc/>
     *
     * @param updateIds 更新文件编号
     * @return
     * @author Qiang.S
     * @createDate 2018-10-15
     */
    Integer deleteElevatorChange(@Param("updateIds") String[] updateIds);


   /**
   *<desc>
   * 通过产品类型查询产品型号
   *</desc>
   *
   * @Author  chengshican
   * @Date   2020-11-12 10:17
   * @Param
   * @Return
   * @Exception
   *
   */
    List<DeviceTypeDefineVO> getProductCodeByDeviceType(@Param("deviceTypes") String[] deviceTypes);


    
    /**
     * <desc>
     *      根据名称查询结果
     * <desc/>
     *
     * @param updateName 文件名称
     * @return
     * @author Qiang.S
     * @createDate 2018-08-23
     */
    String getUpdateInfoByName(String updateName);
    
    /**
     * <desc>
     *      获取安装包详细信息。
     * <desc/>
     *
     * @param updateId 更新文件编号
     * @return
     * @author Qiang.S
     * @createDate 2018/08/23
     */
    OperateUpdateDetailVO getUpdateDetail(@Param("updateId") String updateId);

    /**
     * <desc>
     *      获取安装包详细信息 设备更新用。
     * <desc/>
     *
     * @param updateId 更新文件编号
     * @param filePackage 更新文件包名
     * @param deviceType 软件类型 0安卓APK程序，1安卓系统固件，2按键单片机固件
     * @param productType 产品类型 0云电梯，1云对讲，2云门禁
     * @return
     * @author Qiang.S
     * @createDate 2018/08/23
     */
    OperateUpdateDetailVO getUpdateDetailForDeviceUpdate(@Param("updateId") String updateId,
                                                         @Param("filePackage") String filePackage,
                                                         @Param("deviceType") String deviceType,
                                                         @Param("productType") String productType);

    /**
     * <desc>
     *      安装包信息更新(未更新安装文件时使用)
     * <desc/>
     *
     * @param
     * @return
     * @author Qiang.S
     * @createDate 2018-08-28
     */
    Integer updateUpdateInfo(Map<String, Object> params);

}
